Codebook selection for transmit beamforming

ABSTRACT

A method select a codebook for transmit beamforming. The method constructs an estimated channel matrix based on a codebook, selects a channel submatrix from the estimated channel matrix, calculates a selection matrix from the channel submatrix; and assigns a steering matrix based on the selection matrix. There may be multiple codebooks and the method may construct an estimated channel matrix, select a channel submatrix, and calculate a selection matrix for each of the codebooks, then select an optimal codebook. The steering matrix is assigned based on the optimal codebook. The steering matrix may be used in steering a transmitted packet. The method may also calculate a post-MIMO equalizer signal-to-noise ratio for a data stream, based on the estimated channel matrix and the selected codebook. A related system is also disclosed. Other embodiments are provided, and each of the embodiments described herein can be used alone or in combination with one another.

CROSS-REFERENCE TO RELATED APPLICATION

This application claims the benefit of U.S. Provisional Application No.60/893,472, filed Mar. 7, 2007, which is hereby incorporated byreference in its entirety.

TECHNICAL FIELD

The invention relates to multiple-input multiple-output (MIMO) wirelesscommunications. More particularly, the invention relates to codebookselection for transmit beamforming in a MIMO system.

BACKGROUND

A multiple-input multiple-output (MIMO) wireless communication systemmay utilize multiple antennas at both a transmitter and a receiver totransmit and receive data and to improve the range and performance ofthe system. Data packets may be independently and simultaneouslytransmitted in parallel using separate MIMO channel subcarriers ondifferent transmission antennas. At each receiver antenna, theindependent data packets may be combined and the receiver may recoverthe separate data signals with a decoder. Data transmitted and receivedusing a MIMO system may be modulated using orthogonal frequency divisionmultiplexing (OFDM) or other modulation schemes. Examples of MIMO-OFDMsystems include wireless local area networking using the IEEE 802.11nstandard, wireless metropolitan area networking using the IEEE802.16e/j/m standards, mobile phone communications using the 3GPP LTEstandard, and other systems.

A data packet may be characterized by the equation y=HQ_(steer)s+n,where y is the received signal vector, H is the channel stateinformation of a channel subcarrier, Q_(steer) is a spatial steeringmatrix, s is a transmitted signal vector, and n is an additive noisevector. The spatial steering matrix Q_(steer) may be configured at thetransmitter, based on the channel state information H. In other words,the transmitter may utilize the channel state information H of a channelsubcarrier to perform transmit beamforming. Transmit beamforming is atechnique that may increase the directivity of transmitted data packetsand the signal-to-noise ratio gain at the receiver. Channel stateinformation may be maintained by the transmitter using implicitbeamforming, where the transmitter estimates the forward channel fromthe reverse channel, or using explicit beamforming, where the receiverfeeds back channel state information or steering matrix information tothe transmitter.

A codebook including matrices may be used to calculate the steeringmatrix Q_(steer). A codebook is a predetermined set of possible steeringmatrices or possible column vectors of a steering matrix. The finalsteering matrix Q_(steer) calculation may be conducted by selecting thebest steering matrix or the best combination of steering vectors insidethe codebook. Computation complexity may be reduced by using a codebookbecause Q_(steer) need not be explicitly derived as in existing systems.Existing systems may calculate the steering matrix Q_(steer) usingsingular value decompression (SVD), transmit zero-forcing filter (TxZF),transmit minimum mean square error (TxMMSE), Tomlinson-Harashimaprecoding (THP), TxMRC, SVD(MRT), cophasing, or other existingalgorithms. Such algorithms may require more complex transmitter andreceiver design, or have insufficient performance gain, powerfluctuation at different transmit antennas, and large overhead forfeedback. Therefore, there is a need for an improved codebook selectionfor transmit beamforming in a MIMO system without these drawbacks.

SUMMARY

The present invention is defined by the following claims, and nothing inthis section should be taken as a limitation on those claims.

By way of introduction, the embodiments described below provide a methodfor selecting a codebook for transmit beamforming. In one embodiment,the method comprises constructing an estimated channel matrix based on acodebook, selecting a channel submatrix from the estimated channelmatrix, calculating a selection matrix from the channel submatrix; andassigning a steering matrix based on the selection matrix. If there is aplurality of codebooks, the method may construct an estimated channelmatrix, select a channel submatrix, and calculate a selection matrix foreach of the plurality of codebooks, then select an optimal codebook. Thesteering matrix may be assigned based on the optimal codebook. Thesteering matrix may then be used in steering a transmitted packet. Themethod may also calculate a post-MIMO equalizer (MEQ) signal-to-noiseratio for a data stream, based on the estimated channel matrix and theselected codebook. A related system is also disclosed.

In another embodiment, a codebook selection system comprises channelmatrix estimation means for constructing an estimated channel matrix ona codebook, channel submatrix selection means for selecting a channelsubmatrix from the estimated channel matrix, selection matrixcalculation means for calculating a selection matrix from the channelsubmatrix, and steering matrix assignment means for assigning a steeringmatrix based on the selection matrix. The system may include a pluralityof codebooks, and the channel matrix estimation means, the channelsubmatrix selection means, the selection matrix calculation means, andthe steering matrix assignment means may operate on each of theplurality of codebooks. The steering matrix assignment means may also befor selecting an optimal codebook based on a criterion, and forassigning the steering matrix based on the selection matrixcorresponding to the optimal codebook. The system may also comprisepacket transmission means for transmitting the steered packet based onthe assigned steering matrix.

The channel matrix estimation means may also be for setting a soundingspatial mapping matrix to a codebook matrix after sending a soundingpacket for channel estimation, and calculating an estimated compositechannel matrix based on the sounding matrix, if explicit transmitbeamforming is being used. If implicit transmit beamforming is beingused, the channel matrix estimation means may be for sending a soundingpacket from a receiver to a transmitter, calculating an estimatedreverse link channel matrix upon receiving the sounding packet at thetransmitting, transposing the estimated reverse link channel matrix toform an estimated forward link channel matrix, and multiplying theestimated forward ink channel matrix with the codebook matrix to form anestimated composite channel matrix. The estimated channel matrix mayinclude the estimated composite channel matrix. The channel submatrixselection means may select the submatrix in the estimated compositechannel matrix. The channel submatrix selection means may use one or acombination of a Shannon Capacity maximization algorithm, a maximum ofweakest post processing signal-to-noise ratio algorithm, an incrementalselection algorithm, a decremental selection algorithm, and acorrelation of estimated channel matrix columns algorithm. The selectionmatrix calculator means may also be for calculating the selection matrixat a transmitter, if using implicit transmit beamforming or explicittransmit beamforming with channel state information feedback; or may befor calculating the selection matrix at a receiver, and feeding back theselection matrix to the transmitter, if using explicit transmitbeamforming with steering matrix feedback.

The system may also comprise signal-to-noise ratio (SNR) calculatormeans for calculating a post-MEQ SNR for a data stream, based on theestimated channel matrix and the selected codebook; modulation andcoding scheme (MCS) selection means for selecting a MCS based on thepost-MEQ SNR; and MCS application means for applying the selected MCS toa steered packet. The SNR calculator means may also be for selecting acolumn of the estimated channel matrix with a largest norm. The systemmay include a plurality of data streams, the SNR calculator means may befurther for calculating the post-MEQ SNR for each of the plurality ofdata streams, and the MCS selection means may be further for selectingthe optimal MCS based on the post-MEQ SNR. The SNR calculator means mayalso be further for calculating a norm of each column of the estimatedchannel matrix, projecting the column to a null space of space spannedby previous columns, calculating a projection of each previous column toa null space of space spanned by remaining columns, if the post-MEQ SNRis directly used, and storing the post-MEQ SNR for the data stream.

In another embodiment, a computer readable medium is encoded withcomputer executable instructions comprising constructing an estimatedchannel matrix based on the codebook, selecting a channel submatrix fromthe estimated channel matrix, calculating a selection matrix from thechannel submatrix, and assigning a steering matrix based on theselection matrix. The codebook may include a plurality of codebooks, andthe computer readable instructions may perform the constructing,selecting, calculating, and assigning steps on each of the plurality ofcodebooks. In addition, the instructions may comprise selecting anoptimal codebook based on a criterion from the plurality of codebooks,and assigning the steering matrix based on the selection matrixcorresponding to the optimal codebook. The instructions may furthercomprise transmitting a steered packet based on the assigned steeringmatrix. The instructions may comprise setting a sounding spatial mappingmatrix to a codebook matrix after sending a sounding packet for channelestimation, and calculating an estimated composite channel matrix basedon the sounding matrix, if explicit transmit beamforming is being used.If implicit transmit beamforming is being used, the instructions mayalso comprise sending a sounding packet from a receiver to atransmitter, calculating an estimated reverse link channel matrix uponreceiving the sounding packet at the transmitting, transposing theestimated reverse link channel matrix to form an estimated forward linkchannel matrix, and multiplying the estimated forward link channelmatrix with the codebook matrix to form an estimated composite channelmatrix. The estimated channel matrix may include the estimated compositechannel matrix. The instructions may select the submatrix in theestimated composite channel matrix. The instructions for selecting thechannel submatrix may comprise the use of one or a combination of aShannon Capacity maximization algorithm, a maximum of weakest postprocessing signal-to-noise ratio algorithm, an incremental selectionalgorithm, a decremental selection algorithm, and a correlation ofestimated channel matrix columns algorithm.

In addition, the instructions may comprise calculating a post-MEQsignal-to-noise ratio (SNR) for a data stream, based on the estimatedchannel matrix and the selected codebook, selecting a modulation andcoding scheme (MCS) based on the post-MEQ SNR, generating a selectionvalue corresponding to the selected MCS, and applying the selected MCSto a steered packet. The instructions for calculating the post-MEQ SNRmay comprise selecting a column of the estimated channel matrix with alargest norm. The data stream may comprise a plurality of data streams,and the instructions may further comprise calculating the post-MEQ SNRcomprises calculating the post-MEQ SNR for each of the plurality of datastreams, and selecting the MCS comprises selecting the optimal MCS basedon the post-MEQ SNR. The instructions for calculating the post-MEQ SNRfor each of the data streams may comprise calculating a norm of eachcolumn of the estimated channel matrix, projecting the column to a nullspace of space spanned by previous columns, calculating a projection ofeach previous column to a null space of space spanned by remainingcolumns, if the post-MEQ SNR is directly used, and storing the post-MEQSNR for the data stream.

Each of the embodiments described herein can be used alone or incombination with one another. The embodiments will now be described withreference to the attached drawings.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a flowchart that represents a method of codebook selection fortransmit beamforming of an embodiment.

FIG. 2 is a flowchart that represents constructing an estimated channelmatrix in the method of codebook selection for transmit beamforming ofan embodiment.

FIG. 3 is a diagram of a system including codebook selection andmodulation and coding scheme selection of an embodiment.

FIG. 4 is a flowchart that represents a method of modulation and codingscheme selection of an embodiment.

FIG. 5 is a flowchart that represents calculating post-MEQsignal-to-noise ratios for data streams in the method of modulation andcoding scheme selection of an embodiment.

FIG. 6( a) is a functional block diagram of a hard disk drive.

FIG. 6( b) is a functional block diagram of a digital versatile disk(DVD).

FIG. 6( c) is a functional block diagram of a high definitiontelevision.

FIG. 6( d) is a functional block diagram of a vehicle control system.

FIG. 6( e) is a functional block diagram of a cellular phone.

FIG. 6( f) is a functional block diagram of a set top box.

FIG. 6( g) is a functional block diagram of a media player.

FIG. 6( h) is a functional block diagram of a VoIP phone.

DETAILED DESCRIPTION

The disclosure can be better understood with reference to the followingdrawings and description. The components in the figures are notnecessarily to scale, emphasis instead being placed upon illustratingthe principles of the invention. Moreover, in the figures, likereferenced numerals designate corresponding parts or elements throughoutthe different views.

By way of overview, the embodiments described herein are related tomultiple-input multiple-output (MIMO) wireless communications andcodebook selection for transmit beamforming in a MIMO system. In thedisclosed embodiments, an estimated channel matrix may be constructedbased on a codebook. A channel submatrix may be selected from theestimated channel matrix, and a selection matrix may be calculated fromthe channel submatrix. A steering matrix may be assigned based on theselection matrix. There may be a plurality of codebooks and the methodmay construct an estimated channel matrix, select a channel submatrix,and calculate a selection matrix for each of the plurality of codebooks.An optimal codebook may be selected and the steering matrix may beassigned based on the optimal codebook. The assigned steering matrix maybe used in steering a transmitted packet. A post-MIMO equalizer (MEQ)signal-to-noise ratio for a data stream may also be calculated, based onthe estimated channel matrix.

FIG. 1 is a flowchart that represents a method 100 of codebook selectionfor transmit beamforming. The method 100 may be used in a MIMO-OFDMsystem, where the method 100 may be applied in each subcarrier, or inother suitable systems. Transmit beamforming may use channel stateinformation to steer a transmitted data packet, which may result inincreased signal directivity and received SNR gain. A transmitted datapacket on a channel subcarrier k may be characterized by the equationy_(k)=H_(k)Q_(steer,k)s_(k)+n_(k), where y_(k) is the received vector,H_(k) is the channel state information of a channel subcarrier,Q_(steer,k) is a spatial steering matrix, s_(k) is a transmitted vector,and n_(k) is an additive noise vector. The method 100 may select anoptimal codebook that results in the assignment of the steering matrixQ_(steer,k), which may be used to steer subsequently transmitted datapackets. Selecting an optimal codebook may be beneficial when the numberof data streams N_(SS) is less than the number of transmit antennasN_(TX). A codebook Ω_(i) may, for purposes of codebook selection, bedenoted as a codebook matrix [Ω_(i)], which may be a unitary matrix ofsize N_(TX)×N_(TX). Each element of the codebook matrix [Ω_(i)] maycontain the same power, which may reduce power fluctuation overdifferent transmit RF chains and antennas during data packettransmission. The steering matrix for a codebook Ω_(i) may be calculatedas the best submatrix (e.g., a subset of column vectors) of the codebookmatrix [Ω_(i)]. The final steering matrix Q_(steer,k) may be theselected submatrix among all different codebooks. When there is onecodebook, the codebook selection is straightforward.

In Act 102, an estimated channel matrix Ĥ_(k) may be constructed byusing channel sounding. Channel information from the channel soundingmay be used in Act 102 to construct the estimated channel matrix Ĥ_(k).Transmit beamforming may be explicit or implicit. When explicitbeamforming is used, the estimated channel matrix Ĥ_(k) is an estimateof the multiplication of the true channel state information H_(k) fromthe transmitter to the receiver of a channel subcarrier k, and thepredetermined sounding spatial mapping matrix Q_(sounding,k). Thesounding spatial mapping matrix Q_(sounding,k) may be set to one of thecodebook matrices [Ω_(i)] for all subcarriers k, without loss ofgenerality. The estimated channel matrix Ĥ_(k) for a channel subcarrierk may be expressed by the equation Ĥ_(k)=(H_(k)[Ω_(i)])_(est).

The receiver may directly get information on the actual channel matrixmultiplied with the codebook matrix so that the transmitter or receiver(depending on the type of explicit beamforming used) will perform thecodebook selection without a need to re-multiply the matrices.Specifically, if the receiver performs the codebook selection, e.g.,during explicit beamforming with steering matrix feedback, the receiverdoes not need to know what codebook matrix [Ω_(i)] is applied at thetransmitter. This is due to the feeding back of the selected codebooksubmatrix or indices of the selected column vectors in the codebook inthis case, which allows the receiver to directly select the columns inthe matrix Ĥ_(k) and feed back the selection matrix or column indices.Similarly, if the transmitter performs the codebook selection, e.g.,during explicit beamforming with channel state information matrixfeedback, the receiver will directly feed back the matrix Ĥ_(k), and thetransmitter can perform the selection directly. The channel soundingspatial mapping matrix Q_(sounding,k) is a matrix of size N_(TX)×N_(TX),and may be a unitary matrix with identical row norms, or may be anothersize or type of matrix. The device which sends the steered packets isknown as a beamformer and a recipient device is known as a beamformee.

On the other hand, when implicit beamforming is used, a sounding packetis sent from the beamformee to the beamformer to get the channelestimation of the reverse link, e.g., the MIMO channel from beamformeeto beamformer. The beamformer then transposes the estimated reverse linkchannel matrix to form an estimated forward link channel matrix. Theforward link may be, for example, the MIMO channel from beamformer tobeamformee. The beamformer may directly calculate the steering matrixQ_(steer,k) based on the estimated forward link channel matrix. Comparedto explicit beamforming, implicit beamforming may reduce the amount offeedback and overhead. The estimated channel matrix Ĥ_(k) may beconstructed based on the received sounding packet in either case, and isdescribed in more detailed below.

If there is one codebook, the estimated channel matrix Ĥ_(k) _(—) _(CB1)for the codebook is equivalent to the estimated channel matrix Ĥ_(k),because the codebook selection will default to the one codebook. Ifthere is a plurality of codebooks and if Q_(sounding,k)=[Ω₁] (withoutloss of generality), then the estimated channel matrix Ĥ_(k) _(—) _(CBn)for each codebook may be computed asĤ_(k)[Ω_(n-1)]^(H)[Ω_(n)]≈(H_(k)[Ω_(n)])_(est), where [Ω_(n-1)]^(H) isthe conjugate transpose of the codebook [Ω₁][Ω₁]^(H). The codebook [Ω₁][Ω₁]^(H) is equal to an identity matrix because the codebook matricesare unitary. In the case of implicit beamforming, Q_(sounding,k)=[Ω₁]does not hold and instead Q_(sounding,k)=I, e.g., an identity matrix,because the beamformer does not apply any spatial mapping at thereceiver upon receiving the sounding packet. Therefore, the estimatedchannel matrix Ĥ_(k) is an estimation of true channel matrix H_(k), andregardless of the number of codebooks, Ĥ_(k) _(—) _(CBn)=Ĥ_(k)[Ω_(n)].In the case of implicit beamforming and explicit beamforming withchannel state information feedback, the remaining acts of the method 100are performed at the beamformer, e.g., the transmitter. For explicitbeamforming with steering matrix feedback, Acts 104, 106, 108, 110, 111,and 112 are performed at the beamformee, e.g., the receiver.

In Act 104, a submatrix Ĥ_(sel,k) may be formed from the estimatedchannel matrix Ĥ_(k). A number N_(SS) columns may be selected from theestimated channel matrix Ĥ_(k) to form the submatrix Ĥ_(sel,k), whereN_(SS) is the number of data streams. If there is a plurality ofcodebooks, then the number N_(SS) columns may be selected from theestimated channel matrix Ĥ_(k) for each of the codebooks. The selectionof the N_(SS) columns may be based on one or a combination of knownantenna selection algorithms. These algorithms may include a ShannonCapacity maximization algorithm, a maximum of weakest post processingsignal-to-noise ratio algorithm, an incremental selection algorithm, adecremental selection algorithm, a correlation of estimated channelmatrix columns algorithm, and other suitable algorithms. For example,the incremental selection algorithm may be used, which first selects thecolumn in the estimated channel matrix Ĥ_(k) with the largest norm. Infurther iterations of the incremental selection algorithm, theprojection of each of the remaining columns to the null space of thespace spanned by the previous selected columns is calculated. Iterationof the incremental selection algorithm may continue until the N_(SS)-thcolumn is selected.

In Act 106, a selection matrix V_(k) may be calculated based on thesubmatrix Ĥ_(sel,k). The selection matrix V_(k) may be composed ofN_(SS) columns of a N_(TX)×N_(TX) identity matrix. In particular, if thei-th column of the estimated-channel matrix Ĥ_(k) is selected to be thej-th column in the submatrix Ĥ_(sel,k) for a given codebook, then theelement in the i-th row and j-th column of the selection matrix V_(k)may be set to be 1. If there is a plurality of codebooks, then theselection matrix V_(k) for each codebook may be formed as a permutationof N_(SS) columns in an identity matrix. In the case of one codebook,the selection matrix is equal to V_(k), which is composed of 0s and 1s.In the case of multiple codebooks, the selection matrix V_(k) for eachcodebook in a plurality of codebooks may be expressed asV_(k)=[Ω_(n-1)]^(H)[Ω_(n)]{tilde over (V)}_(k), where V_(k) is theselection matrix composed of 0s and 1s. The selection matrix may becalculated at the transmitter or the receiver, depending on what type ofbeamforming is used, and is described in more detail below.

The method 100 then determines whether all codebooks have been processedin Act 108. If not all codebooks have been processed, then the method100 returns to Act 102 to construct an estimated channel matrix Ĥ_(k)for the next codebook, as described above (e.g.,Ĥ_(k)[Ω₁]^(H)[Ω_(n)]≈(H_(k)[Ω_(n)])_(est)). The method 100 continuesthrough Acts 104 and 106 for the next codebook, as described above, toform a submatrix Ĥ_(sel,k) and calculate a selection matrix V_(k), andcontinues until all codebooks are processed. When it is determined thatall codebooks have been processed in Act 108, then the method 100continues to Act 110.

In Act 110, an optimal codebook may be selected based on a certaincriterion C. For example, the optimal codebook may be selected by thelargest Shannon channel capacity of Ĥ_(sel,k) for each codebook. Ifthere is one codebook, the optimal codebook is set to the one codebook,by default. If there is a plurality of codebooks, the selected optimalcodebook may be denoted as the codebook n₀, where

$n_{0} = {\underset{l = {1\mspace{14mu} \ldots \mspace{14mu} N_{CB}}}{\arg \; \max}{{C\left( {\hat{H}}_{{sel},{{k\_ CB}\; 1}} \right)}.}}$

The final selection matrix V_(k) is then determined by the selectionmatrix corresponding to the n₀-th codebook.

In Act 111, it is determined whether explicit beamforming with steeringmatrix feedback is being used. If explicit beamforming with steeringmatrix feedback is used, in Act 112, the selection matrix V_(k) is fedback from the receiver (beamformee) to the transmitter (beamformer). Ifthere is only one codebook applied in the codebook selection process,V_(k) is only composed of 0 and 1 elements, as described above withreference to Act 106. The feedback overhead may therefore be greatlyreduced in this case. For example, the selection matrix V_(k) may be fedback in the form of a matrix with a small number of bits representingeach of its 0 and 1 elements. In another example, the selection matrixV_(k) may be fed back as the indices of the selected columns, e.g., ifthe first and third columns are selected in the estimated channel matrixĤ_(k) in Act 104, indices “1” and “3” may be fed back, and thetransmitter may reconstruct the selection matrix V_(k) using theseindices. In the latter example, the transmitter (beamformer) needs priorknowledge of how to interpret the feedback as column indices.

Act 113 is performed if explicit beamforming with steering matrixfeedback is not being used, or following Act 112. In Act 113, at thetransmitter (beamformer), regardless of the type of transmitbeamforming, the steering matrix Q_(steer,k) may be assigned based onthe selection matrix V_(k) for the optimal codebook selected in Act 110.The steering matrix Q_(steer,k) may be calculated by the equationQ_(steer,k)=Q_(sounding,k)V_(k), where the channel sounding matrixQ_(sounding,k) was constructed in Act 102 and the selection matrix V_(k)was calculated in Act 106 and assigned in Act 110, and fed back in Act112 if explicit beamforming with steering matrix feedback is used. Asdescribed above, in the case where one codebook is applied (N_(CB)=1),the selection matrix V_(k) is composed of 1s in certain matrix positionsto appropriately select elements of the channel sounding matrixQ_(sounding,k), and 0s in the remaining positions. In this case, thesteering matrix Q_(steer,k) may simply be calculated by picking theselected columns in the single codebook matrix Q_(sounding,k)=[Ω₁]. Thecalculated steering matrix Q_(steer,k) based on the selected optimalcodebook may then be used to steer a transmitted data packet in Act 114.The steered transmitted data packet may use Q_(steer,k) as characterizedin the equation y_(k)=H_(k)Q_(steer,k)s_(k)+n_(k) to more preciselydirect the data packet. Specifically, the method 100 may calculate asteering matrix Q_(steer,k) that obtains good diversity and spatialmultiplexing gains. The steering matrix Q_(steer,k) may have identicalrow norms, such that there is no transmit power fluctuation. Becausethere may be no transmit power fluctuation, no calculation is requiredfor power backoff.

In an example of the method 100, the number of transmit antennasN_(TX)=3, the number of receive antennas N_(RX)=3, the number of datastreams N_(SS)=2, and the number of codebooks N_(CB)=1. The channelsounding matrix Q_(sounding,k) is assigned to the codebook matrix [Ω₁]in this example, and is equal to

${Q_{{sounding},k} = {\left\lbrack \Omega_{1} \right\rbrack = {\frac{1}{\sqrt{3}}\begin{bmatrix}1 & 1 & 1 \\1 & ^{{- j}\; 2\; {\pi/3}} & ^{j\; 2\; {\pi/3}} \\1 & ^{j\; 2\; {\pi/3}} & ^{{- j}\; 2\; {\pi/3}}\end{bmatrix}}}},{\forall{k.}}$

The first and third columns of the channel sounding matrixQ_(sounding,k) may be selected using one of the algorithms describedabove in Act 104, such as the incremental selection algorithm. Becausethe first and third columns of the channel sounding matrixQ_(sounding,k) are selected, the selection matrix V_(k) for the onecodebook in this example is equal to

$V_{k} = {V_{k\_ CB1} = \begin{bmatrix}1 & 0 \\0 & 0 \\0 & 1\end{bmatrix}}$

in Act 106. In this example, there is only one codebook, and the method100 continues from Act 108 to Act 110. In Act 110, because there is onlyone codebook, the one codebook is set as the optimal codebook. Thesteering matrix Q_(steer,k) is then assigned based on the selectionmatrix V_(k) in Act 113, as in the equationQ_(steer,k)=Q_(sounding,k)V_(k). In this example,

$Q_{{steer},k} = {{{\frac{1}{\sqrt{3}}\begin{bmatrix}1 & 1 & 1 \\1 & ^{{- j}\; 2\; {\pi/3}} & ^{j\; 2\; {\pi/3}} \\1 & ^{j\; 2\; {\pi/3}} & ^{{- j}\; 2\; {\pi/3}}\end{bmatrix}}\begin{bmatrix}1 & 0 \\0 & 0 \\0 & 1\end{bmatrix}} = {{\frac{1}{\sqrt{3}}\begin{bmatrix}1 & 1 \\1 & ^{j\; 2\; {\pi/3}} \\1 & ^{{- j}\; 2\; {\pi/3}}\end{bmatrix}}.}}$

The first and third columns of Q_(sounding,k) are selected by theselection matrix V_(k), and the resulting steering matrix Q_(steer,k)contains the first and third columns of Q_(sounding,k). Subsequentlytransmitted data packets may then be steered using the calculatedsteering matrix Q_(steer,k) in Act 114.

FIG. 2 is a flowchart that represents constructing an estimated channelmatrix in the method 100 of codebook selection for transmit beamforming.The flowchart of FIG. 2 details Act 102 of FIG. 1 in further describingthe construction of the estimated channel matrix Ĥ_(k). In Act 201, ifthe first codebook is being processed, then the method 100 continues toAct 202, otherwise the method 100 continues to Act 212. Act 212 isperformed when a second or later codebook is processed. In this case,channel sounding is not needed and the estimated channel matrix Ĥ_(k)for the current codebook may be reconstructed by the matrixmultiplication Ĥ_(k) _(—)_(CBn)=Ĥ_(k)[Ω₁]^(H)[Ω_(n)]≈(H_(k)[Ω_(n)])_(est), as described above.Following Act 212, the method may continue to Act 104 to select thecolumns in Ĥ_(k) _(—) _(CBn).

If the first codebook is being processed, in Act 202 it is determinedwhether explicit transmit beamforming or implicit transmit beamformingis being used. If explicit transmit beamforming is being used, then themethod continues to Act 204. In Act 204, for the purpose of channelestimation for the first codebook, the channel sounding matrixQ_(sounding,k) may be set to one of the codebook matrices at thetransmitter (beamformer), for example, [Ω₁], for all channel subcarriersk, without loss of generality. The estimated channel matrix Ĥ_(k) may becalculated in Act 206, as given by Ĥ_(k)=(H_(k)[Ω_(i)])_(est). In thecase of explicit beamforming, the calculation of the estimated channelmatrix Ĥ_(k) occurs at the receiver (beamformee). In particular, whenexplicit beamforming with channel state information feedback is used,the estimated channel matrix Ĥ_(k) is fed back to the transmitter(beamformer) by the receiver (beamformee), and all the remaining stepsmay be performed at the transmitter. If explicit beamforming withsteering matrix feedback is used, the estimated channel matrix Ĥ_(k)will be stored at the receiver (beamformee) and Acts 104, 106, 108, 110and 111 in FIG. 1 are performed at the receiver (beamformee). After theestimated channel matrix Ĥ_(k) is calculated in Act 206, the method maycontinue to Act 104, as described above.

On the other hand, if implicit transmit beamforming is being used, thenthe method continues to Act 208 after Act 202 for obtaining theestimated channel matrix Ĥ_(k) corresponding to the first codebook. InAct 208, the receiver (beamformee) in a MIMO system sends a soundingpacket to the transmitter (beamformer). The sounding packet is sent toestimate the MIMO channel, and assumes that there is channel reciprocitybetween the forward and reverse links (e.g., the channel from beamformeeto beamformer is equal to the transposition of the channel frombeamformer to beamformee). The MIMO channel estimate may be given byĤ_(k) ^((RV))=(H_(k))^(T). In Act 210, the transmitter may perform thereverse link channel estimation Ĥ_(k) ^((RV)) and in Act 206, thetransmitter may transpose the reverse link channel estimation to formthe forward link channel estimation, as given by Ĥ_(k)=(Ĥ_(k)^((RV)))^(T). The method may continue to Act 104, as described above.

FIG. 3 is a diagram of a system 300 including codebook selection 302 andmodulation and coding scheme selection 304. The modulation and codingscheme (MCS) determines the different number of spatial streams, themodulation constellations, and the channel error control coding rate onthe transmitted signals. When OFDM is applied, MCS may be set to be thesame or different over the different subcarriers. The codebook selection302 may include the method 100, as described above, which describes thatthe transmitter or the receiver has knowledge of the estimated channelmatrix Ĥ_(k). Because the estimated channel matrix Ĥ_(k) is known, thesystem 300 may be configured to select an appropriate MCS together withthe steering matrices Q_(steer,k) that result from the method 100. MCSselection may be based on the post-MIMO equalizer (MEQ) signal-to-noiseratio (SNR) values in the data streams of a MIMO system. The MIMOequalizer is a MIMO spatial multiplexing detector that suppresses thecross-stream interference on each of the substreams. Post-MEQ SNR valuesrepresent the strength of each demultiplexed spatial stream, which givesinformation on the quality of the stream. In particular, the post-MEQSNR values for each data stream may be calculated and compared in orderto appropriately select a MCS. In FIG. 3, the post-MEQ SNR values areshown for N_(SS)=1, N_(SS)=2, up to N_(SS)=N_(SS) _(—) _(MAX), whereN_(SS) _(—) _(MAX) is the maximum number of data streams in the system.

The post-MEQ SNR values calculated by the codebook selection 302 may bemultiplied with SNR₀, the average SNR at each receiver antenna, and maybe used by the MCS selection 304 to reflect the true post-MEQ SNR and toselect a MCS. The MCS selection 304 derives the selected MCS by usingcertain criteria, e.g., by comparing the post-MEQ SNR with predeterminedthresholds. The selected MCS also implies the value of N_(SS)(appropriate number of spatial streams). This N_(SS) value iscommunicated to the Q_(steer) selection 306. The Q_(steer) selection 306may use the N_(SS) value to reshape the corresponding Q_(steer,k) fromthe Q_(steer,k) _(—) _(max) that comes from the codebook selection 302.Q_(steer,k) _(—) _(max) may denote the steering matrix of the k-thsubcarrier after N_(SS) _(—) _(MAX) (the maximum possible number ofspatial streams). For example, if there are three transmit antennas,N_(SS) _(—) _(MAX) is equal to 2, and the codebook selection 302 mayselect two columns from the estimated channel matrix Ĥ_(k). The selectedMCS and the corresponding Q_(steer,k) may be sent to the transmitter tosteer transmitted data packets. A controller 308 may also be included inthe system 300 that may control and monitor the operation of thecodebook selection 302, the modulation and coding scheme selection 304,and the Q_(steer) selection 306.

FIG. 4 is a flowchart that represents a method 400 of modulation andcoding scheme (MCS) selection. In Act 402, post-MEQ signal-to-noiseratio (SNR) values may be calculated for each data stream. Thecalculation may depend on the selection algorithm used and the number ofdata streams, as detailed below. The post-MEQ SNR values for each datastream may be stored, and the values used to compare with predeterminedthresholds to select an appropriate MCS in Act 404. In particular, thestored post-MEQ SNR values corresponding to the different N_(SS) datastreams are compared, and the appropriate MCS is selected. In Act 406,the N_(SS) value corresponding to the selected MCS is generated. ThisN_(SS) value may be used to reshape the corresponding steering matrixQ_(steer,k) from Q_(steerk) _(—) _(max). In particular, the steeringmatrix Q_(steer,k) corresponds to the first N_(SS) columns ofQ_(steer,k) _(—) _(max). In Act 408, the selected MCS and the steeringmatrix Q_(steer,k) may be applied to steered transmitted data packets.

FIG. 5 is a flowchart that represents calculating post-MEQsignal-to-noise ratios for data streams in the method 400 of modulationand coding scheme selection. FIG. 5 shows an example of the incrementalcodebook selection method with one codebook. The flowchart of FIG. 5details Act 402 of FIG. 4 in further describing the calculation ofpost-MEQ SNR values for data streams. In Act 504, the norm of eachcolumn in the estimated channel matrix Ĥ_(k) may be calculated and thecolumn with the largest norm may be selected, as the first step ofcodebook selection. The calculated norm of a selected column may beproportional to the post-MEQ SNR value when there is one spatial stream(N_(SS)=1), as given by SNR_(N) _(ss) ₌₁=SNR₀.norm([Ĥ_(k)]*₍₁₎), whereSNR₀ is the average SNR at each receive antenna. In Act 506, from thesecond step to step N_(SS) _(—) _(MAX) of codebook selection, thecurrently selected column in the current codebook selection step isprojected to the null space of space spanned by previously selectedcolumns. This projection may be proportional to the weakest post-MEQ SNRvalue, assuming zero-forcing (ZF) MEQ, up to the average SNR value SNR₀.ZF MEQ is the receiver MIMO equalizer approach that may completelyremove the cross-stream interference in MIMO spatial multiplexingsystems.

In Act 508, it is determined whether the post-MEQ SNR value derived inAct 506 for the current codebook selection step is directly used inselecting the MCS. If the post-MEQ SNR value is directly used, then themethod continues to Act 512, where the post-MEQ SNR value is stored forthe current number of spatial streams under consideration, for use byMCS selection in Act 404. On the other hand, if the post-MEQ SNR valueis not directly used, then the method continues to Act 510, where theMCS selection needs the post-MEQ SNR values on each of the data streams.In Act 510, the projections of each of the previously selected columnsto the null space of the space spanned by remaining selected columns maybe calculated, and the post-MEQ SNR value is calculated in the same wayas in Act 506. In Act 512, the post-MEQ SNR value is stored for thecurrent data stream under consideration. Act 514 determines whether allthe N_(SS) _(—) _(MAX) steps of the codebook selection have beenprocessed. If not all of the steps of the codebook selection have beenprocessed, then the method returns to Act 506 and performs a projection,as described above. The method continues through Acts 508, 510, and 512,as described above, and continues until all N_(SS) _(—) _(MAX) steps ofthe codebook selection are processed. When the method determines thatall N_(SS) _(—) _(MAX) steps of the codebook selection have beenprocessed in Act 514, then the method continues to Act 404 to performMCS selection.

Referring now to FIGS. 6( a) to 6(h), various exemplary implementationsof the present invention are shown. Referring to FIG. 6( a), the presentinvention may be embodied in a hard disk drive (HDD) 600. HDD 600 maycommunicate with a host device (not shown) such as a computer, mobilecomputing devices such as personal digital assistants, cellular phones,media or MP3 players and the like, and/or other devices via one or morewired or wireless communication links 608.

The present invention may be implemented with either or both signalprocessing and/or control circuits, which are generally identified inFIG. 6( a) at 602. In some implementations, the signal processing and/orcontrol circuit 602 and/or other circuits (not shown) in the HDD 600 mayprocess data, perform coding and/or encryption, perform calculations,and/or format data that is output to and/or received from a magneticstorage medium 606. HDD 600 may be connected to memory 609, such asrandom access memory (RAM), a low latency nonvolatile memory such asflash memory, read only memory (ROM) and/or other suitable electronicdata storage.

Referring now to FIG. 6( b), the present invention may be implemented ina digital versatile disc (DVD) drive 610. The present invention may beimplemented in either or both signal processing and/or control circuits,which are generally identified in FIG. 6( b) at 612, and/or mass datastorage 618 of DVD drive 610. Signal processing and/or control circuit612 and/or other circuits (not shown) in DVD drive 610 may process data,perform coding and/or encryption, perform calculations, and/or formatdata that is read from and/or data written to an optical storage medium616. In some implementations, signal processing and/or control circuit612 and/or other circuits (not shown) in DVD drive 610 can also performother functions such as encoding and/or decoding and/or any other signalprocessing functions associated with a DVD drive.

DVD drive 610 may communicate with a device (not shown) such as acomputer, television or other device via one or more wired or wirelesscommunication links 617. DVD drive 610 may communicate with mass datastorage 618 that stores data in a nonvolatile manner. Mass data storage618 may include a HDD such as that shown in FIG. 6( a). The HDD may be amini HDD that includes one or more platters having a diameter that issmaller than approximately 1.8″DVD drive 610 may be connected to memory619, such as RAM, ROM, low latency nonvolatile memory such as flashmemory, and/or other suitable electronic data storage.

Referring now to FIG. 6( c), the present invention may be embodied in ahigh definition television (HDTV) 620. The present invention may beimplemented in either or both signal processing and/or control circuits,which are generally identified in FIG. 6( c) at 622, a WLAN interface629 and/or mass data storage 627 of the HDTV 620. HDTV 620 may receiveHDTV input signals in either a wired or wireless format via one or morewired or wireless communication links 624 and generate HDTV outputsignals for a display 626. In some implementations, signal processingcircuit and/or control circuit 622 and/or other circuits (not shown) ofHDTV 620 may process data, perform coding and/or encryption, performcalculations, format data and/or perform any other type of HDTVprocessing that may be required.

HDTV 620 may communicate with mass data storage 627 that stores data ina nonvolatile manner such as optical and/or magnetic storage devices. Atleast one HDD may have the configuration shown in either FIG. 6( a)and/or at least one DVD may have the configuration shown in FIG. 6( b).The HDD may be a mini HDD that includes one or more platters having adiameter that is smaller than approximately 1.8″HDTV 620 may beconnected to memory 628 such as RAM, ROM, low latency nonvolatile memorysuch as flash memory and/or other suitable electronic data storage. HDTV620 also may support connections with a WLAN via a WLAN networkinterface 629.

Referring now to FIG. 6( d), the present invention may be implemented ina control system of a vehicle 630, a WLAN interface 648 and/or mass datastorage 646 of the vehicle control system. In some implementations, thepresent invention is implemented in a power-train control system 632that receives inputs from one or more sensors 636 such as temperaturesensors, pressure sensors, rotational sensors, airflow sensors and/orany other suitable sensors and/or that generates one or more outputcontrol signals such as engine operating parameters, transmissionoperating parameters, and/or other control signals at one or moreoutput(s) 638.

The present invention may also be embodied in other control systems 640of vehicle 630. Control system 640 may likewise receive signals frominput sensors 642 and/or output control signals to one or more output(s)644. In some implementations, control system 640 may be part of ananti-lock braking system (ABS), a navigation system, a telematicssystem, a vehicle telematics system, a lane departure system, anadaptive cruise control system, a vehicle entertainment system such as astereo, DVD, compact disc and the like. Still other implementations arecontemplated.

Powertrain control system 632 may communicate with mass data storage 646that stores data in a nonvolatile manner. Mass data storage 646 mayinclude optical and/or magnetic storage devices, for example HDDs and/orDVDs. At least one HDD may have the configuration shown in FIG. 6( a)and/or at least one DVD may have the configuration shown in FIG. 6( b).The HDD may be a mini HDD that includes one or more platters having adiameter that is smaller than approximately 1.8″Powertrain controlsystem 632 may be connected to memory 647 such as RAM, ROM, low latencynonvolatile memory such as flash memory and/or other suitable electronicdata storage. Powertrain control system 632 also may support connectionswith a WLAN via a WLAN network interface 648. The control system 640 mayalso include mass data storage, memory and/or a WLAN interface (all notshown).

Referring now to FIG. 6( e), the present invention may be embodied in acellular phone 650 that may include a cellular antenna 651. The presentinvention may be implemented in either or both signal processing and/orcontrol circuits, which are generally identified in FIG. 6( e) at 652, aWLAN interface and/or mass data storage of the cellular phone 650. Insome implementations, cellular phone 650 includes a microphone 656, anaudio output 658 such as a speaker and/or audio output jack, a display660 and/or an input device 662 such as a keypad, pointing device, voiceactuation and/or other input device. Signal processing and/or controlcircuits 652 and/or other circuits (not shown) in cellular phone 650 mayprocess data, perform coding and/or encryption, perform calculations,format data and/or perform other cellular phone functions.

Cellular phone 650 may communicate with mass data storage 664 thatstores data in a nonvolatile manner such as optical and/or magneticstorage devices, for example HDDs and/or DVDs. At least one HDD may havea configuration shown in FIG. 6( a) and/or at least one DVD may have theconfiguration shown in FIG. 6( b). The HDD may be a mini HDD thatincludes one or more platters having a diameter that is smaller thanapproximately 1.8″Cellular phone 650 may be connected to memory 666 suchas RAM, ROM, low latency nonvolatile memory such as flash memory and/orother suitable electronic data storage. Cellular phone 650 also maysupport connections with a WLAN via a WLAN network interface 668.

Referring now to FIG. 6( f), the present invention may be embodied in aset top box 680. The present invention may be implemented in either orboth signal processing and/or control circuits, which are generallyidentified in FIG. 6( f) at 684, a WLAN interface and/or mass datastorage of the set top box 680. Set top box 680 receives signals from asource such as a broadband source and outputs standard and/or highdefinition audio/video signals suitable for a display 688 such as atelevision and/or monitor and/or other video and/or audio outputdevices. Signal processing and/or control circuits 684 and/or othercircuits (not shown) of the set top box 680 may process data, performcoding and/or encryption, perform calculations, format data and/orperform any other set top box function.

Set top box 680 may communicate with mass data storage 690 that storesdata in a nonvolatile manner. Mass data storage 690 may include opticaland/or magnetic storage devices, for example HDDs and/or DVDs. At leastone HDD may have a configuration shown in FIG. 6( a) and/or at least oneDVD may have the configuration shown in FIG. 6( b). The HDD may be amini HDD that includes one or more platters having a diameter that issmaller than approximately 1.8″Set top box 680 may be connected tomemory 694 such as RAM, ROM, low latency nonvolatile memory such asflash memory and/or other suitable electronic data storage. Set top box680 also may support connections with a WLAN via a WLAN networkinterface 696.

Referring now to FIG. 6( g), the present invention may be embodied in amedia player 700. The present invention may be implemented in either orboth signal processing and/or control circuits, which are generallyidentified in FIG. 6( g) at 704, a WLAN interface and/or mass datastorage of the media player 700. In some implementations, media player700 includes a display 707 and/or a user input 708 such as a keypad,touchpad and the like. In some implementations, media player 700 mayemploy a graphical user interface (GUI) that typically employs menus,drop down menus, icons and/or a point-and-click interface via display707 and/or user input 708. Media player 700 further includes an audiooutput 709 such as a speaker and/or audio output jack. Signal processingand/or control circuits 704 and/or other circuits (not shown) of mediaplayer 700 may process data, perform coding and/or encryption, performcalculations, format data and/or perform any other media playerfunction.

Media player 700 may communicate with mass data storage 710 that storesdata such as compressed audio and/or video content in a nonvolatilemanner. In some implementations, the compressed audio files includefiles that are compliant with MP3 format or other suitable compressedaudio and/or video formats. The mass data storage 710 may includeoptical and/or magnetic storage devices, for example HDDs and/or DVDs.At least one HDD may have a configuration shown in FIG. 6( a) and/or atleast one DVD may have the configuration shown in FIG. 6( b). The HDDmay be a mini HDD that includes one or more platters having a diameterthat is smaller than approximately 1.8″.

Media player 700 may be connected to memory 714 such as RAM, ROM, lowlatency nonvolatile memory such as flash memory and/or other suitableelectronic data storage. Media player 700 also may support connectionswith a WLAN via a WLAN network interface 716. Still otherimplementations in addition to those described above are contemplated.

Referring to FIG. 6( h), the present invention may be embodied in aVoice over Internet Protocol (VoIP) phone 750 that may include anantenna 718. The present invention may be implemented in either or bothsignal processing and/or control circuits, which are generallyidentified in FIG. 6( h) at 720, a wireless interface and/or mass datastorage of the VoIP phone 750. In some implementations, VoIP phone 750includes, in part, a microphone 724, an audio output 726 such as aspeaker and/or audio output jack, a display monitor 728, an input device730 such as a keypad, pointing device, voice actuation and/or otherinput devices, and a Wi-Fi communication module 732. Signal processingand/or control circuits 720 and/or other circuits (not shown) in VoIPphone 750 may process data, perform coding and/or encryption, performcalculations, format data and/or perform other VoIP phone functions.

VoIP phone 750 may communicate with mass data storage 722 that storesdata in a nonvolatile manner such as optical and/or magnetic storagedevices, for example HDDs and/or DVDs. At least one HDD may have aconfiguration shown in FIG. 6( a) and/or at least one DVD may have theconfiguration shown in FIG. 6( b). The HDD may be a mini HDD thatincludes one or more platters having a diameter that is smaller thanapproximately 1.8″VoIP phone 750 may be connected to memory 734, whichmay be a RAM, ROM, low latency nonvolatile memory such as flash memoryand/or other suitable electronic data storage. VoIP phone 750 isconfigured to establish communications link with a VoIP network (notshown) via Wi-Fi communication module 732.

All of the discussion above, regardless of the particular implementationbeing described, is exemplary in nature, rather than limiting. Althoughspecific components of the codebook selection for transmit beamformingare described, methods, systems, and articles of manufacture consistentwith the codebook selection for transmit beamforming may includeadditional or different components. For example, components of thecodebook selection for transmit beamforming may be implemented by one ormore of: control logic, hardware, a microprocessor, microcontroller,application specific integrated circuit (ASIC), discrete logic, or acombination of circuits and/or logic. Further, although selectedaspects, features, or components of the implementations are depicted ashardware or software, all or part of the systems and methods consistentwith the codebook selection for transmit beamforming may be stored on,distributed across, or read from machine-readable media, for example,secondary storage devices such as hard disks, floppy disks, and CD-ROMs;a signal received from a network; or other forms of ROM or RAM eithercurrently known or later developed. Any act or combination of acts maybe stored as instructions in computer readable storage medium. Memoriesmay be DRAM, SRAM, Flash or any other type of memory. Programs may beparts of a single program, separate programs, or distributed acrossseveral memories and processors.

The processing capability of the system may be distributed amongmultiple system components, such as among multiple processors andmemories, optionally including multiple distributed processing systems.Parameters, databases, and other data structures may be separatelystored and managed, may be incorporated into a single memory ordatabase, may be logically and physically organized in many differentways, and may implemented in many ways, including data structures suchas linked lists, hash tables, or implicit storage mechanisms. Programsand rule sets may be parts of a single program or rule set, separateprograms or rule sets, or distributed across several memories andprocessors.

It is intended that the foregoing detailed description be understood asan illustration of selected forms that the invention can take and not asa definition of the invention. It is only the following claims,including all equivalents, that are intended to define the scope of thisinvention.

1. A method for selecting a codebook, comprising: constructing anestimated channel matrix based on the codebook; selecting a channelsubmatrix from the estimated channel matrix; calculating a selectionmatrix from the channel submatrix; and assigning a steering matrix basedon the selection matrix.
 2. The method of claim 1, wherein: the codebookcomprises a plurality of codebooks; constructing the estimated channelmatrix comprises constructing the estimated channel matrix for each ofthe plurality of codebooks; selecting the channel submatrix comprisesselecting the channel submatrix for each of the plurality of codebooks;calculating the selection matrix comprises calculating the selectionmatrix for each of the plurality of codebooks; and assigning thesteering matrix comprises: selecting an optimal codebook based on acriterion from the plurality of codebooks; and assigning the steeringmatrix based on the selection matrix corresponding to the optimalcodebook.
 3. The method of claim 1, further comprising transmitting asteered packet based on the assigned steering matrix.
 4. The method ofclaim 1, wherein constructing the estimated channel matrix comprises: ifusing explicit transmit beamforming, setting a sounding spatial mappingmatrix to a codebook matrix for sending a sounding packet; calculatingan estimated composite channel matrix based on the codebook, wherein theestimate composite channel matrix is the multiplication of a channelmatrix and the sounding spatial mapping matrix; constructing theestimated composite channel matrix based on each of the other codebooksin the case that the codebook comprises a plurality of codebooks;multiplying the existing estimated composite channel matrix with thetranspose conjugate of the first codebook matrix applied as the soundingspatial mapping matrix; multiplying the result with the currentlyconsidered codebook matrix; and if using implicit transmit beamforming:sending the sounding packet from a receiver to a transmitter;calculating an estimated reverse link channel matrix based on thereceived sounding packet at the transmitter; transposing the estimatedreverse link channel matrix to form an estimated forward link channelmatrix; and calculating the estimated composite channel matrix bymultiplying the estimated forward link channel matrix and the codebookmatrix (or each of the codebook matrices in the plurality of codebooks).5. The method of claim 1, wherein selecting the channel-submatrixcomprises using one or a combination of: a Shannon Capacity maximizationalgorithm, a maximum of weakest post processing signal-to-noise ratioalgorithm, an incremental selection algorithm, a decremental selectionalgorithm, and a correlation of estimated channel matrix columnsalgorithm.
 6. The method of claim 1, wherein calculating the selectionmatrix comprises: if using implicit transmit beamforming or explicittransmit beamforming with channel state information feedback,calculating the selection matrix at a transmitter; if using explicittransmit beamforming with steering matrix feedback, calculating theselection matrix at a receiver, and feeding back the selection matrix tothe transmitter.
 7. The method of claim 6, wherein if using explicittransmit beamforming with steering matrix feedback, and if the codebookcontains only one codebook, the selection matrix fed back to thetransmitter comprises 0 and 1 elements; further wherein the feedbackmatrix is either in the form of a matrix with quantized elements withsmall number of quantization bit(s), or in the form of the indicesnumbers of the selected columns so that the transmitter, beforeassigning the steering matrix, can translate the indices numbers back tothe selection matrix.
 8. The method of claim 1, further comprising:calculating a post-MEQ signal-to-noise ratio (SNR) for a data stream,based on the estimated channel matrix and the codebook; selecting amodulation and coding scheme (MCS) based on the post-MEQ SNR; generatinga selection value corresponding to the selected MCS; and applying theselected MCS to a steered packet.
 9. The method of claim 8, whereincalculating the post-MEQ SNR comprises selecting a column of theestimated channel matrix with a largest norm.
 10. The method of claim 8,wherein: the data stream comprises a plurality of data streams;calculating the post-MEQ SNR comprises calculating the post-MEQ SNR foreach of the plurality of data streams; and selecting the MCS comprisesselecting the optimal MCS based on the post-MEQ SNR.
 11. The method ofclaim 10, wherein calculating the post-MEQ SNR for each of the pluralityof data streams comprises: calculating a norm of each column of theestimated channel matrix; projecting the column to a null space of spacespanned by previous columns; calculating a projection of each previouscolumn to a null space of space spanned by remaining columns, if thepost-MEQ SNR is directly used; and storing the post-MEQ SNR for the datastream.
 12. A codebook selection system, comprising: a channel matrixestimation unit configured to construct an estimated channel matrixbased on a codebook; a channel submatrix selection unit configured toselect a channel submatrix from the estimated channel matrix; aselection matrix calculator configured to calculate a selection matrixfrom the channel submatrix; and a steering matrix assignment unitconfigured to assign a steering matrix based on the selection matrix.13. The system of claim 12, wherein: the codebook comprises a pluralityof codebooks; the channel matrix estimation unit is further configuredto construct the estimated channel matrix for each of the plurality ofcodebooks; the channel submatrix selection unit is further configured toselect the channel submatrix for each of the plurality of codebooks; theselection matrix calculator is further configured to calculate theselection matrix for each of the plurality of codebooks; and thesteering matrix assignment unit is further configured to: select anoptimal codebook based on a criterion from the plurality of codebooks;and assign the steering matrix based on the selection matrixcorresponding to the optimal codebook.
 14. The system of claim 12,further comprising a packet transmitter configured to transmit a steeredpacket based on the assigned steering matrix.
 15. The system of claim12, wherein the channel matrix estimation unit is further configured to:if using explicit transmit beamforming, set a sounding spatial mappingmatrix to a codebook matrix after sending a sounding packet, andcalculate an estimated composite channel matrix based on the codebook,wherein the estimated composite channel matrix is the multiplication ofa channel matrix and the sounding spatial mapping matrix; to constructthe estimated composite channel matrix based on each of the othercodebooks in the case that the codebook comprises a plurality ofcodebooks; multiply the existing estimated composite channel matrix withthe transpose conjugate of the first codebook matrix applied as thesounding spatial mapping matrix; and multiply the result with thecurrently considered codebook matrix; and if using implicit transmitbeamforming: send the sounding packet from a receiver to a transmitter;calculate an estimated reverse link channel matrix based on the receivedsounding packet at the transmitter; transpose the estimated reverse linkchannel matrix to form an estimated forward link channel matrix; andcalculate the estimated composite channel matrix by multiplying theestimated forward link channel matrix and the codebook matrix.
 16. Thesystem of claim 12, wherein the channel submatrix selection unit isfurther configured to use one or a combination of: a Shannon Capacitymaximization algorithm, a maximum of weakest post processingsignal-to-noise ratio algorithm, an incremental selection algorithm, adecremental selection algorithm, and a correlation of estimated channelmatrix columns algorithm.
 17. The system of claim 12, wherein theselection matrix calculator is further configured to: if using implicittransmit beamforming or explicit transmit beamforming with channel stateinformation feedback, calculate the selection matrix at a transmitter;if using explicit transmit beamforming with steering matrix feedback,calculate the selection matrix at a receiver, and feed back theselection matrix to the transmitter.
 18. The system of claim 17, whereinif using explicit transmit beamforming with steering matrix feedback,and if the codebook contains only one codebook, the selection matrix fedback to the transmitter comprises 0 and 1 elements, wherein the feedbackmatrix is either in the form of a matrix with quantized elements withsmall number of quantization bit(s), or in the form of the indicesnumbers of the selected columns so that the transmitter, beforeassigning the steering matrix, can translate the indices numbers back tothe selection matrix.
 19. The system of claim 12, further comprising: asignal-to-noise ratio (SNR) calculator configured to calculate for apost-MEQ SNR for a data stream, based on the estimated channel matrixand the codebook; a modulation and coding scheme (MCS) selection unitconfigured to select a MCS based on the post-MEQ SNR; a selection valuecalculator configured to generate a selection value corresponding to theselected MCS; and a MCS application unit configured to apply theselected MCS to a steered packet.
 20. The system of claim 19, whereinthe SNR calculator is further configured to select a column of theestimated channel matrix with a largest norm.
 21. The system of claim19, wherein: the data stream comprises a plurality of data streams; theSNR calculator is further configured to calculate the post-MEQ SNR foreach of the plurality of data streams; and the MCS selection unit isfurther configured to select the optimal MCS based on the post-MEQ SNR.22. The system of claim 21, wherein the SNR calculator is furtherconfigured to: calculate a norm of each column of the estimated channelmatrix; project the column to a null space of space spanned by previouscolumns; calculate a projection of each previous column to a null spaceof space spanned by remaining columns, if the post-MEQ SNR is directlyused; and store the post-MEQ SNR for the data stream.
 23. The system ofclaim 12, wherein the proposed schemes are applied for all or part ofthe subcarriers in OFDM systems.